Test for issue #2064
authorKornel Lesiński <kornel@geekhood.net>
Tue, 13 Dec 2016 21:00:15 +0000 (21:00 +0000)
committerKornel Lesiński <kornel@geekhood.net>
Tue, 13 Dec 2016 21:00:51 +0000 (21:00 +0000)
tests/resolve.rs

index 15f583b51c1f0b8505b8568d41442a7ff1c97f41..3e697e56a0db79a6d63daf6d04afe55aa7a5b8d6 100644 (file)
@@ -5,7 +5,7 @@ extern crate cargo;
 
 use std::collections::HashMap;
 
-use hamcrest::{assert_that, equal_to, contains};
+use hamcrest::{assert_that, equal_to, contains, not};
 
 use cargo::core::source::{SourceId, GitReference};
 use cargo::core::dependency::Kind::{self, Development};
@@ -237,6 +237,27 @@ fn resolving_with_specific_version() {
                                        ("foo", "1.0.1")])));
 }
 
+#[test]
+fn test_resolving_maximum_version_with_transitive_deps() {
+    let mut reg = registry(vec![
+        pkg!(("util", "1.2.2")),
+        pkg!(("util", "1.0.0")),
+        pkg!(("util", "1.1.1")),
+        pkg!("foo" => [dep_req("util", "1.0.0")]),
+        pkg!("bar" => [dep_req("util", ">=1.0.1")]),
+    ]);
+
+    let res = resolve(pkg_id("root"), vec![dep_req("foo", "1.0.0"), dep_req("bar", "1.0.0")],
+                      &mut reg).unwrap();
+
+    assert_that(&res, contains(names(&[("root", "1.0.0"),
+                                       ("foo", "1.0.0"),
+                                       ("bar", "1.0.0"),
+                                       ("util", "1.2.2")])));
+    assert_that(&res, not(contains(names(&[("util", "1.0.1")]))));
+    assert_that(&res, not(contains(names(&[("util", "1.1.1")]))));
+}
+
 #[test]
 fn resolving_incompat_versions() {
     let mut reg = registry(vec![